const MIN = 0,
  MAX = Infinity;

export default {
  /** 校验公司名称 */
  vailtorCompanyName: () => {
    return (val: string) =>
      /^([\u4e00-\u9fa5]|[\ufe30-\uffa0]|[A-Za-z]|[0-9]|\_|\-|\(|\)){4,40}$/.test(
        val
      );
  },
  /** 校验数字 */
  vailtorNumber: (
    config: {
      // 是否支持小数
      isdigit?: boolean;
      // 小数后限制位数
      digitSize?: number;
      // 最小限制
      min?: number;
      /** 最大限制 */
      max?: number;
    } = {}
  ) => {
    const { isdigit = false, digitSize = 2, min = MIN, max = MAX } = config;
    return (val: string | number) => {
      val = Number(val);
      if (!isdigit || !String(val).includes(".")) {
        return val > min && val < max;
      }
      const _digitSize = String(val).split(".").pop()?.length || 0;
      if (_digitSize > digitSize) return false;
      return val > min && val < max;
    };
  },
  /** 验证姓名 */
  vailtorUserName: () => (val: string) =>
    /^([\u4e00-\u9fa5]|[\ufe30-\uffa0]|[A-Za-z]){2,20}$/.test(val),
  /** 验证身份证号码 */
  vailtorIdCard: () => (val: string) =>
    /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(val),
  /** 校验手机号 */
  vailtorMobile: () => (val: string) => /^1[3,4,5,6,7,8,9][0-9]{9}$/.test(val),
  /** 验证日期 */
  vailtorDate: () => (val: string) =>
    /^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$/.test(val),
  /** 校验邮箱 */
  vailtorEmail: () => (val: string) =>
    /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/.test(val),
  /** 验证地理位置编码 520000,520100,520103 */
  vailtorAddressCode: () => (val: string) =>
    /^[0-9]{2}\,[0-9]{4}\,[0-9]{6}$/.test(val),
  /** 验证银行卡号 */
  vailtorBankNo: () => (val: string) => /^([1-9]{1})(\d{15,19})$/.test(val),
};
